import subprocess

# 指定stderr=subprocess.STDOUT，那么stdout和stderr将会被整合到这一个属性中，且stderr将会为None
p = subprocess.Popen(('ping', '-n', '5', 'www.baidu.com'),text=True,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.STDOUT,
                     universal_newlines=True,
                     shell=True)

while True:
    out = p.stdout.readline()
    # poll() 用于检查子进程是否已经执行结束，没结束返回None，结束后返回状态码。
    if not out and p.poll() is not None:
        break
    if out:
        print(out.strip())

returnCode = p.wait()
if returnCode == 0:
    print('>>> 执行成功')
else:
    print('>>> 执行失败：', p.stderr.read().strip())